import request from '@/utils/request';
import qs from 'qs';
import type { ResponseData } from '../typing';
// 响应接口
export interface GetProjectInfoPageRes {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            createTime: Record<string, unknown>;
            updateTime: Record<string, unknown>;
            creator: number;
            updater: number;
            // 主键 */
            id: number;
            // 项目code */
            projectCode: string;
            // 项目名称 */
            projectName: string;
            // 所属事业部code */
            corpCode: string;
            // 所属事业部名称 */
            corpName: string;
            // 项目业态(字典项value) */
            businessFormat: string;
            // 项目类型(字典项value) */
            projectType: string;
            // 合同到期时间 */
            expirationTime: Record<string, unknown>;
            // 人员code */
            managerCode: string;
            // 项目经理 */
            projectManager: string;
            // 项目经理联系方式 */
            managerPhone: string;
            // 建筑面积 */
            buildingArea: string;
            // 占地面积 */
            landArea: string;
            // 项目是否质保期:0->否,1->是 */
            warrantyPeriod: number;
            // 省份ID */
            provinceId: string;
            // 省份 */
            province: string;
            // 城市ID */
            cityId: string;
            // 城市 */
            city: string;
            // 区县ID */
            regionId: string;
            // 区县 */
            region: string;
            // 详细地址 */
            detailAddress: string;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
export interface ProjectQueryParams {
    projectCode: string;
    businessFormat?: string;
    projectType?: string;
    projectManager?: string;
    warrantyPeriod?: string;
    expirationTimeStart?: string;
    expirationTimeEnd?: string;
    current?: string;
    size?: string;
}
/**
 * 获得项目明细分页
 * @param {string} businessFormat 项目业态(字典项value)
 * @param {string} projectType 项目类型(字典项value)
 * @param {string} projectManager 项目经理
 * @param {string} warrantyPeriod 项目是否质保期:0->否,1->是
 * @param {string} expirationTimeStart 合同到期时间
 * @param {string} expirationTimeEnd 合同到期时间
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getProjectInfoPage(params: ProjectQueryParams): Promise<GetProjectInfoPageRes> {
    return request.get(`/yfwy/project-info/page?${qs.stringify(params)}`);
}
// 响应接口
export interface GetProjectInfoRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        // 主键 */
        id: number;
        // 项目code */
        projectCode: string;
        // 项目名称 */
        projectName: string;
        // 所属事业部code */
        corpCode: string;
        // 所属事业部名称 */
        corpName: string;
        // 项目业态(字典项value) */
        businessFormat: string;
        // 项目类型(字典项value) */
        projectType: string;
        // 合同到期时间 */
        expirationTime: Record<string, unknown>;
        // 人员code */
        managerCode: string;
        // 项目经理 */
        projectManager: string;
        // 项目经理联系方式 */
        managerPhone: string;
        // 建筑面积 */
        buildingArea: string;
        // 占地面积 */
        landArea: string;
        // 项目是否质保期:0->否,1->是 */
        warrantyPeriod: number;
        // 省份ID */
        provinceId: string;
        // 省份 */
        province: string;
        // 城市ID */
        cityId: string;
        // 城市 */
        city: string;
        // 区县ID */
        regionId: string;
        // 区县 */
        region: string;
        // 详细地址 */
        detailAddress: string;
    };
    msg: string;
}
/**
 * 获得项目明细
 * @param {string} id
 * @returns
 */
export function getProjectInfo(id: number): Promise<GetProjectInfoRes> {
    return request.get(`/yfwy/project-info/get/${id}`);
}
/**
 * 导出项目明细 Excel
 * @param {string} businessFormat 项目业态(字典项value)
 * @param {string} projectType 项目类型(字典项value)
 * @param {string} projectManager 项目经理
 * @param {string} warrantyPeriod 项目是否质保期:0->否,1->是
 * @param {string} expirationTimeStart 合同到期时间
 * @param {string} expirationTimeEnd 合同到期时间
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function exportProjectInfoExcel(params: ProjectQueryParams): Promise<Blob> {
    const data = params;
    // data.projectCode = [...params.projectCode];
    return request.get(`/yfwy/project-info/export-excel?${qs.stringify(data)}`, {
        responseType: 'blob',
    });
}
/**
 * 删除项目明细
 * @param {string} id
 * @returns
 */
export function deleteProjectInfo(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/yfwy/project-info/delete/${id}`);
}
// 参数接口
export interface UpdateProjectInfoParams {
    // 项目code */
    projectCode: string;
    // 项目业态(字典项value) */
    businessFormat: string;
    // 项目类型(字典项value) */
    projectType: string;
    // 合同到期时间 */
    expirationTime: Record<string, unknown>;
    // 项目经理code */
    managerCode: string;
    // 项目经理 */
    projectManager: string;
    // 项目经理联系方式 */
    managerPhone: string;
    // 建筑面积 */
    buildingArea: string;
    // 占地面积 */
    landArea: string;
    // 项目是否质保期:0->否,1->是 */
    warrantyPeriod: boolean;
    // 省份ID */
    provinceId: string;
    // 城市ID */
    cityId: string;
    // 区县ID */
    regionId: string;
    // 详细地址 */
    detailAddress: string;
    // 主键 */
    id: number;
}
/**
 * 更新项目明细
 * @param {object} params 管理后台 - 项目明细更新 Request VO
 * @param {string} params.projectCode 项目code
 * @param {string} params.businessFormat 项目业态(字典项value)
 * @param {string} params.projectType 项目类型(字典项value)
 * @param {object} params.expirationTime 合同到期时间
 * @param {string} params.managerCode 项目经理code
 * @param {string} params.projectManager 项目经理
 * @param {string} params.managerPhone 项目经理联系方式
 * @param {string} params.buildingArea 建筑面积
 * @param {string} params.landArea 占地面积
 * @param {boolean} params.warrantyPeriod 项目是否质保期:0->否,1->是
 * @param {string} params.provinceId 省份ID
 * @param {string} params.cityId 城市ID
 * @param {string} params.regionId 区县ID
 * @param {string} params.detailAddress 详细地址
 * @param {number} params.id 主键
 * @returns
 */
export function updateProjectInfo(params: UpdateProjectInfoParams): Promise<ResponseData<number>> {
    return request.put(`/yfwy/project-info/update`, params);
}
// 参数接口
export interface CreateProjectInfoParams {
    // 项目code */
    projectCode: string;
    // 项目业态(字典项value) */
    businessFormat: string;
    // 项目类型(字典项value) */
    projectType: string;
    // 合同到期时间 */
    expirationTime: Record<string, unknown>;
    // 项目经理code */
    managerCode: string;
    // 项目经理 */
    projectManager: string;
    // 项目经理联系方式 */
    managerPhone: string;
    // 建筑面积 */
    buildingArea: string;
    // 占地面积 */
    landArea: string;
    // 项目是否质保期:0->否,1->是 */
    warrantyPeriod: boolean;
    // 省份ID */
    provinceId: string;
    // 城市ID */
    cityId: string;
    // 区县ID */
    regionId: string;
    // 详细地址 */
    detailAddress: string;
}
/**
 * 创建项目明细
 * @param {object} params 管理后台 - 项目明细创建 Request VO
 * @param {string} params.projectCode 项目code
 * @param {string} params.businessFormat 项目业态(字典项value)
 * @param {string} params.projectType 项目类型(字典项value)
 * @param {object} params.expirationTime 合同到期时间
 * @param {string} params.managerCode 项目经理code
 * @param {string} params.projectManager 项目经理
 * @param {string} params.managerPhone 项目经理联系方式
 * @param {string} params.buildingArea 建筑面积
 * @param {string} params.landArea 占地面积
 * @param {boolean} params.warrantyPeriod 项目是否质保期:0->否,1->是
 * @param {string} params.provinceId 省份ID
 * @param {string} params.cityId 城市ID
 * @param {string} params.regionId 区县ID
 * @param {string} params.detailAddress 详细地址
 * @returns
 */
export function createProjectInfo(params: CreateProjectInfoParams): Promise<ResponseData<number>> {
    return request.post(`/yfwy/project-info/create`, params);
}
export function queryProjectTree(name?: string) {
    return request.get<any, any>(`/yfwy/project/tree?${qs.stringify({ name })}`);
}
/**
 * 获得项目经理
 * @param {string} projectCode
 * @returns
 */
export function getProjectManager(projectCode: string): Promise<ResponseData<any>> {
    return request.get(`/yfwy/project-info/manager/${projectCode}`);
}
// 响应接口
export interface ProjectListSelfRes {
    code: number;
    data: {
        // 项目code */
        projectCode: string;
        // 项目名称 */
        projectName: string;
        // 子集 */
        children: {
            // id */
            id: number;
            // 名称 */
            name: string;
            // 父级ID */
            parentId: number;
        }[];
    }[];
    msg: string;
}
/**
 * 项目列表(当前登录人负责的)
 * @returns
 */
export function projectListSelf(projectCode?: string): Promise<ProjectListSelfRes> {
    if (projectCode) return request.get(`/yfwy/project/treeself?projectCode=${projectCode}`);
    return request.get(`/yfwy/project/treeself`);
}
